Custom Serializer তৈরি এবং ব্যবহারের টেকনিক

Java Technologies - জ্যাকসন (Jackson) - Jackson এর মাধ্যমে কাস্টম Serializer এবং Deserializer তৈরি
182

Jackson লাইব্রেরি ব্যবহার করে Custom Serializer তৈরি করা খুবই কার্যকর, যখন আপনার একটি Object-কে JSON-এ Serialize করার সময় কিছু কাস্টম লজিক যোগ করার প্রয়োজন হয়। নীচে Custom Serializer তৈরি এবং ব্যবহারের একটি উদাহরণ দেওয়া হলো:


১. Custom Serializer তৈরি করার ধাপসমূহ:

  1. JsonSerializer ক্লাস Extend করুন: একটি Custom Serializer ক্লাস তৈরি করতে হবে যা JsonSerializer<T> ইন্টারফেসকে ইমপ্লিমেন্ট করে।
  2. serialize মেথড Override করুন: এখানে আপনি Object-কে JSON-এ কিভাবে Serialize করবেন তা নির্ধারণ করবেন।
  3. @JsonSerialize এনোটেশন ব্যবহার করুন: কাস্টম Serializer-কে Object ফিল্ড বা ক্লাসে প্রয়োগ করতে এই এনোটেশন ব্যবহার করতে হয়।

উদাহরণ: Custom Serializer

১. একটি ক্লাস তৈরি করুন

public class User {
    private int id;
    private String name;
    private String email;

    // Constructor
    public User(int id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

২. Custom Serializer তৈরি করুন

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;

public class UserCustomSerializer extends JsonSerializer<User> {
    @Override
    public void serialize(User user, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeStartObject();
        gen.writeNumberField("userId", user.getId()); // Custom field name
        gen.writeStringField("fullName", user.getName().toUpperCase()); // Convert name to uppercase
        gen.writeStringField("contactEmail", user.getEmail()); // Custom field name
        gen.writeEndObject();
    }
}

৩. @JsonSerialize এনোটেশন ব্যবহার করে Serializer প্রয়োগ করুন

import com.fasterxml.jackson.databind.annotation.JsonSerialize;

@JsonSerialize(using = UserCustomSerializer.class)
public class User {
    // Same as above
}

৪. মেইন প্রোগ্রামে ব্যবহার

import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) {
        try {
            // Object তৈরি
            User user = new User(1, "Rahim", "rahim@example.com");

            // ObjectMapper ব্যবহার
            ObjectMapper objectMapper = new ObjectMapper();

            // Object থেকে JSON
            String jsonString = objectMapper.writeValueAsString(user);

            // JSON প্রিন্ট করুন
            System.out.println("Custom Serialized JSON: " + jsonString);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

৫. আউটপুট

Custom Serialized JSON: {
  "userId": 1,
  "fullName": "RAHIM",
  "contactEmail": "rahim@example.com"
}

২. গুরুত্বপূর্ণ বিষয়:

  1. Custom Logic: কাস্টম Serializer-এ আপনি ফিল্ডের নাম পরিবর্তন, ডাটা ফরম্যাটিং, বা কিছু ডাটা বাদ দিতে পারবেন।
  2. Global Serializer: যদি একই Serializer একাধিক ক্লাস বা Object-এ ব্যবহার করতে চান, তবে আপনি SimpleModule ব্যবহার করে ObjectMapper-এ রেজিস্টার করতে পারেন।

    SimpleModule module = new SimpleModule();
    module.addSerializer(User.class, new UserCustomSerializer());
    objectMapper.registerModule(module);
    
  3. Complex Objects বা Collections: একই কৌশল ব্যবহার করে Complex Objects বা Collections-এর জন্যও Custom Serializer তৈরি করতে পারেন।

এভাবে Jackson ব্যবহার করে Custom Serializer তৈরি এবং প্রয়োগ করা যায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...